Secret sharing with no trusted initializer

ABSTRACT

An item rating and recommendation platform identifies rating data including respective ratings of multiple items with respect to multiple users; identifies user-feature data including user features contributing to the respective ratings of the multiple items with respect to the multiple users; and receives, from a social network platform via a secret sharing scheme without a trusted initializer, manipulated social network data computed based on social network data and a first number of random variables. The social network data indicate social relationships between any two of the number of users. In the secret sharing scheme without the trust initializer, the social network platform shares with the item rating and recommendation platform manipulated social network data without disclosing the social network data. The item rating and recommendation platform updates the user-feature data based on the rating data and the manipulated social network data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of PCT Application No.PCT/CN2018/110688, filed on Oct. 17, 2018, which is hereby incorporatedby reference in its entirety.

BACKGROUND

With the development of technology and data analysis, many onlineplatforms collect different types of data. For example, movie ratingplatforms collect rating data from the users, while social mediaplatforms collect social network data form the users. These collecteddata are valuable and are usually kept as private information by therespective platforms. The platforms are paying more and more attentionto data privacy and do not necessarily want to share their collecteddata, at least not in its original form.

SUMMARY

The present disclosure describes methods and systems for secret sharingwithout a trusted initializer, for example, between two platforms forproviding social recommendations.

In an implementation, a computer-implemented method including:identifying, by an item rating and recommendation platform, rating dataincluding respective ratings of a number of items with respect to anumber of users; identifying, by the item rating and recommendationplatform, user-feature data including a number of user featurescontributing to the respective ratings of the number of items withrespect to the number of users; receiving, from a social networkplatform by the item rating and recommendation platform via a secretsharing scheme without a trusted initializer, a number of manipulatedsocial network data computed based on social network data and a firstnumber of random variables, wherein the social network data indicatesocial relationships between any two of the number of users, wherein, inthe secret sharing scheme without the trust initializer, the socialnetwork platform shares with the item rating and recommendation platformthe number of manipulated social network data without disclosing thesocial network data; and updating, by the item rating and recommendationplatform, the user-feature data based on the rating data and the numberof the manipulated social network data.

The previously described implementation is implementable using acomputer-implemented method; a non-transitory, computer-readable mediumstoring computer-readable instructions to perform thecomputer-implemented method; and a computer-implemented system includinga computer memory interoperably coupled with a hardware processorconfigured to perform the computer-implemented method/the instructionsstored on the non-transitory, computer-readable medium.

The subject matter described in this specification can be implemented inparticular implementations, so as to realize one or more of thefollowing advantages. First, the described techniques allow differentplatforms to securely collaborate in secret sharing without disclosingprivate or sensitive data, which encourages integration andcollaboration among the platforms without compromising data privacy.Second, since much of the work can be done by various platforms beforeapplying the secret sharing scheme, the described techniques allow formore efficient common development activities (such as, with respect totime, processor cycles, memory usage, and network bandwidth/congestion)or activities not supported by current online platforms. Third, thedescribed techniques can provide improved recommendation models of theitem rating and recommendation platforms and provide better-targetedrecommendations (such as, a movie recommendation platform providing moretargeted, relevant recommendations to users by leveraging obtainedsocial network data from a social media platform). Fourth, the describedtechniques allow the platforms to collaborate without the overhead of atrusted authority. Other advantages will be apparent to those ofordinary skill in the art.

The details of one or more implementations of the subject matter of thisspecification are set forth in the Detailed Description, the claims, andthe accompanying drawings, and the claims. Other features, aspects, andadvantages of the subject matter will become apparent from the DetailedDescription, the claims, and the accompanying drawings.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an example system for secretsharing between platform A and platform B without a trusted initializer,according to an implementation of the present disclosure.

FIG. 2 is a flowchart illustrating an example secret sharing methodbetween platform A and platform B without a trusted initializer forgenerating recommendations by platform A, according to an implementationof the present disclosure.

FIG. 3 is a flowchart illustrating an example secret sharing methodbetween platform A and platform B for computing an element Z_(ij) of amatrix product of matrix A and matrix B using a secret sharing schemewithout a trusted initializer, according to an implementation of thepresent disclosure.

FIG. 4 is a flowchart illustrating an example method for generating arecommendation by an item rating and recommendation platform using asecret sharing scheme without a trusted initializer, according to animplementation of the present disclosure.

FIG. 5 is a block diagram illustrating an example computer system usedto provide computational functionalities associated with describedalgorithms, methods, functions, processes, flows, and procedures asdescribed in the instant disclosure, according to an implementation ofthe present disclosure.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

The following detailed description describes secret sharing without atrusted initializer, for example, between two platforms for providingrecommendations to users based on social network data, and is presentedto enable any person skilled in the art to make and use the disclosedsubject matter in the context of one or more particular implementations.Various modifications, alterations, and permutations of the disclosedimplementations can be made and will be readily apparent to those ofordinary skill in the art, and the general principles defined herein maybe applied to other implementations and applications, without departingfrom scope of the disclosure. In some instances, details unnecessary toobtain an understanding of the described subject matter may be omittedso as to not obscure one or more described implementations withunnecessary detail and inasmuch as such details are within the skill ofone of ordinary skill in the art. The present disclosure is not intendedto be limited to the described or illustrated implementations, but to beaccorded the widest scope consistent with the described principles andfeatures.

Among many online platforms, different platforms can accumulatedifferent types of data. For example, an item rating and recommendationplatform such as NETFLIX or IMDB accumulates rating data from usersregarding movies and TV series. A social media or social networkplatform such as FACEBOOK or TWITTER accumulates social network datafrom the users and their friends. Social information can improve theperformance of a recommendation system because close friends tend tohave similar preferences. Existing social based recommendation methodsassume that the user rating data of an item and the social data betweenthe users are shared. However, due to data privacy or other concerns,the online platforms typically do not share their original data withother parties.

Example techniques are described that allow platforms to securelycollaborate in building an improved recommendation system based on boththe rating data and the social network data, without disclosing eachplatform's private data to the other. For example, a socialrecommendation model can be trained based on both the rating data andthe social network data via a secret sharing scheme between an itemrating and recommendation platform and a social network platform. Underthe secret sharing scheme, the data exchanged between the platforms arein a manipulated form, rather than their original form. The exchangeddata are manipulated such that one cannot recover or decode the originaldata from the manipulated data.

The secret sharing scheme is different from encoding, encryption orother schemes for secured data transmission in which a data source(e.g., as a transmitter) encodes or encrypts original data into anencoded form before transmission, and an intended recipient can decodeor recover the original data from the received encoded data, forexample, based on a known security key or a corresponding decodingalgorithm. The secret sharing scheme protects the original data frombeing known even by an intended recipient. As such, the data source canpreserve the privacy of the original data.

The secret sharing scheme thus encourages collaboration betweendifferent platforms and can help achieve mutual benefits, withoutcompromising data privacy. For example, with the disclosed secretsharing scheme, the item rating and recommendation platform can leveragesocial network information from the social network platform to betterpredict a user's needs and provide targeted recommendations to users,resulting in enhanced user experience and potential profit returns tothe item rating and recommendation platform.

FIG. 1 is a block diagram illustrating an example system 100 for secretsharing between platform A 102 and platform B 104, according to animplementation of the present disclosure. Platform A 102 can include,but is not limited to, an item rating and recommendation platform inentertainment, retail, service, and other industry or sectors where theusers can rate products, services, or other items. Examples of an itemrating and recommendation platform include, for example, AMAZON,NETFLIX, or IMDB. Platform A 102 can collect rating data R from itsusers. The rating data R can include one or more actual ratings of oneor more items (e.g., products or services) given by the users, or one ormore mapped ratings based on user's clicks, purchases, searches, orother historic activities with respect to the items. The ratings canreflect the user's needs, fondness, or preferences of the items. Theratings can have a specific range (e.g., [0, 1], or [1, 5]). In someimplementations, the rating data R can be represented in a matrix havinga dimension of M*N, where M represents the number of users and Nrepresents the number of items, with entries R_(ij) representing arating of item j by user i.

Platform A 102 can also include user data, which can include, forexample, user's names, ages, genders, addresses, or any other account orprofile information, purchase histories, browsing histories, or searchhistories of the users at the platform A 102. Platform A 102 can alsoinclude item data, which can include, for example, names, categories,prices, keywords, instructions, etc. related to the items.

In some implementations, the collected rating data R can be a sparsematrix, because only a small number (compared to M*N) of entries R_(ij)having the rating or mapped rating based on existing user activitiesrelative to the items. In some implementations, platform A 102 canpredict known ratings of items so as to provide targeted recommendationsof items to users. In some implementations, platform A 102 can predictknown ratings of items, for example, based on the user data and the itemdata according to machine learning or statistics algorithms. As anexample, platform A 102 can provide recommendations of items based onuser-feature data U (also referred to as user factor data) anditem-feature data V (also referred to as item factor data) according tomatrix factorization methods or other techniques. Specifically, eachuser (e.g., user i) can be characterized by a vector (e.g., U_(i)) ofuser features such as age, gender, geo-location, visit pattern, etc.Each item (e.g., item j) can be characterized by a vector (e.g., V_(j))of item features such as category, keywords, topics, prices, etc. Theuser features and item features can be factors that impact a givenuser's rating, selection, or purchase of a given item. In someimplementations, a rating of an item given by a user can be approximatedby a dot product of the vector of user features and the vector of itemfeatures. For example,R_(ij)≈U_(i) ^(t)V_(j)   (1)where U_(i) represents a vector of the user-feature data correspondingto user i; V_(j) represents a vector of the item-feature datacorresponding to item j; and R_(ij) represents a rating of item j byuser i.

In some implementations, the user feature vector (e.g., U_(i)) and theitem feature vector (e.g., V_(j)) are latent vectors which can belearned from training data (e.g., known rating data).

Platform B 104 can include, but is not limited to, a social mediaplatform (such as, FACEBOOK, TWITTER, or INSTRAGRAM). Platform B 104 cancollect social network data S from its users. The social network datacan include, for example, names, ages, genders, addresses, jobs,relationships, hobbies, statuses, comments, blogs, browsing history, orother demographic, employment, recreational information of a user at theplatform B and corresponding information of the user's friends, family,co-workers, etc. Such social network data S can be informative toplatform A for predicting a user's rating of an item and providingrecommendations.

For example, the platform A can predict user's ratings by solving anoptimization problem as shown in formula (2):

$\begin{matrix}{{\underset{U_{i},V_{j}}{{argmin}\;}L} = {{\sum_{{u_{i} \in u},{v_{j} \in v}}\left( {R_{ij} - {U_{i}^{T}V_{j}}} \right)^{2}} + {\lambda_{1}{\sum_{u_{i},{u_{k} \in u}}{S_{ik}\left( {U_{i} - U_{k}} \right)}^{2}}} + {\lambda_{2}\left( {{{\sum_{u_{i} \in u}U_{i}}}^{2} + {{\sum_{v_{j} \in v}V_{i}}}^{2}} \right)}}} & (2)\end{matrix}$where S_(ik) represents a social relationship between user i and user kin the social network data S; λ₁ represents a predefined weightassociated with the social network data; and λ₂ represents a predefinedweight to prevent overfitting.

In this example, the objective function on the right hand side of theformula (2) includes 3 terms. The first term Σ_(u) _(i) _(∈u,v) _(j)_(∈v)(R_(ij)−U_(i) ^(T)V_(j) ² represents the error or distance betweenthe known rating data and the approximated rating computed based on theuser-feature data (e.g., U=[U₁, U₂, . . . , U_(M)]) and the item-featuredata (e.g., V=[V₁, V₂, . . . , V_(N)]). The second term λ₁Σ_(u) _(i)_(,u) _(k) _(∈u)S_(ik)(U₁−U_(k))² represents the effects of socialnetwork data S on the user feature vectors. For example, the closer orstronger social relationship of two users, the more similar the twousers-feature vectors. In some implementations, the larger S_(ik), thecloser or stronger social relationship of two users. The third termλ₂(∥Σ_(u) _(i) _(∈u)U_(i)∥²+∥Σ_(v) _(j) _(∈v)V_(i)∥²) is used to preventoverfitting. The values of weights λ₁ and λ₂ can be pre-determined. Thelarger the weight, the more impact of a corresponding term on theobjective function.

The above optimization problem to minimize the objective function can besolved, for example, by gradient descent or another algorithm. Forexample, taking derivative of the latent vectors U and V can result inthe below two equations (2).

$\begin{matrix}{\frac{\partial_{L}}{\partial_{U}} = {{\left( {{UV} - R} \right)V} + {2\lambda_{1}{U \cdot {{diag}\left( {S \cdot I_{M}} \right)}}} + {2\lambda_{1}{U \cdot S}} + {\lambda_{2}U}}} & (3) \\{\frac{\partial_{L}}{\partial_{V}} = {{\left( {{UV} - R} \right)U} + {\lambda_{2}V}}} & (4)\end{matrix}$

To solve for U and V in the above equations (3) and (4), results ofmatrix products U·diag(S·I_(M)) and U·S suffice, without the need toknow values of U and S individually. As such, a secret sharing schemecan be used by the platforms A and B to obtain the results of matrixproducts U·diag(S·I_(M)) and U·S. Under the secret sharing scheme, theplatform A can disclose the manipulated U to the platform B withoutdisclosing the original U to the platform B; and the platform B candisclose the manipulated S to the platform A without disclosing theoriginal S to the platform A.

In some implementations, the secret sharing scheme can be implementedwith or without a trust initializer. With a trust initializer, a commoninitial point can be established by the trust initializer and sent tothe two platforms to assist their data exchange. Without a trustinitializer, the two platforms can each generate random numbers as theirrespective initial points to assist their data exchange. The platformscould benefit from collaboration without sharing sensitive privateinformation.

FIG. 2 is a flowchart illustrating an example secret sharing method 200between platform A and platform B without a trusted initializer forgenerating recommendations by platform A, according to an implementationof the present disclosure. The platform A can be the platform Adescribed in FIG. 1, and platform B can be the platform B described inFIG. 1. In some implementations, the example secret sharing method canbe implemented in an iterative algorithm. The number of iterations T canbe, for example, a pre-determined value or determined based on certaincriteria (e.g., whether the algorithm converges or updates ordifferences of U or V after different iterations are below a threshold).At 202, the platform A identifies user rating data R and initialuser-feature data U and item-feature data V, and the number ofiterations T. At 204, the platform B identifies the social network dataS. For a t-th iteration (t<T), at 208, the platform A and platform B canperform a secret sharing scheme without a trusted initializer to obtainthe matrix products U·diag(S·I_(M)) and U·S. At 206, the platform Aupdates the U or V based on the matrix products U·diag(S·I_(M)) and U·S,for example, according to Equations (3) and (4). After T iterations, at210, the platform A item-feature generates recommendations based on theupdated user-feature data U and item-feature data V.

In some implementations, let matrix Z as a product of matrix A andmatrix B. That is Z=A·B. Z_(ij) represents the entry/element of Z in thei-th row and j-th column. Z_(ij) can be computed, for example, accordingto Equation (5). The matrix products U·diag(S·I_(M)) and U·S, Forexample,Z_(ij)≈A_(i) ^(T)B_(j)   (5)where A_(i) ^(T) represents the i-th row of matrix A, and B_(j)represent the j-th column of matrix B.

FIG. 3 is a flowchart illustrating an example secret sharing method 300between platform A and platform B for computing an element Z_(ij) of aproduct of matrix A and matrix B using a secret sharing scheme without atrusted initializer, according to an implementation of the presentdisclosure. In a secret sharing scheme without a trusted initializer,both platforms generate random numbers in series of steps andcomputations that would replace the need for a trusted initializer.

At 304, platform A 302 obtains an initial vector x=(x1,x2, . . . ,x_2k),which can be A_(i) ^(T) , the i-th row of matrix A. At 324, platform B322 obtains an initial vector y=(y1,y2, . . . ,y_2k), which can be B₁represent the j-th column of matrix B. The vectors x and y can have thesame dimension of 2k. The vectors x and y can include, for example,random variables, all zeros, predetermined values, or other initialvalues.

In some implementations, both platforms A and B compute for the outputby looping k times 350. At the k-th iteration, at 306, platform A 302generates random values a_(j) and c_(j) such that the sum (a_(j)+c_(j))is not equal to 0. For example, the random generated values a_(j) andc_(j) can be repeatedly generated until a_(j) +c_(j) is not equal to 0as shown in 308. When a_(j) +c_(j) is found to not be equal 0, platformA 302 computes for values that will be manipulated and later sent toplatform B 322. The computed values for platform A 302 can include, butare not limited to, p_(j)=a_(j)+c_(j), x′_([2j-1])=x_([2j-1])+a_(j), andx′_([2j])=x_([2j])+c_(j) as shown in 310. At 311, the values, {p_(j),x′_([2-1]), x′_([2j])}, are sent to platform B 322 for computation.Similarly, at 326, platform B 322 generates random values b_(j) andd_(j) such that the sum (b_(j)+d_(j)) is not equal to 0. For example,the random generated values b_(j) and d_(j) can be repeatedly generateduntil b_(j)+d_(j) is not equal to 0 as shown in 328. The computed valuesfor platform B 322 can include, but are not limited to,q_(j)=b_(j)+d_(j), y′_([2j-1])=y_([2j-1])+b_(j), andy′_([2j])=y_([2j])+d_(j) as shown in 330. At 331, the values, {q_(j),y′_([2-1]), y′_([2j])}, are sent to platform A 302 for computation.

After the platforms send manipulated data to each other, while still inthe k loop, both platform compute values that ultimately sum up to theoutput values. Platform A 302 computesh_(j)=y′_([2j-1])(x_([2j-1])+2a_(j))+y′_([2j])(x_([2j])+2c_(j))+q_(j)(a_(j)+2c_(j))as shown in 312. Platform B 322 computes forg_(j)=x′_([2j-1])(2y′_([2j-1])−b_(j))+x′_([2j])(2y_([2j])−d_(j))+p_(j)(d_(j)−2b_(j))as shown in 332. At 314, platform A 302 obtains a value h by summing upall of the h_(j), that is, h=Σ_(j=1) ^(k)h_(j), as shown in 314. At 332,platform B 322 obtains a value g by summing up all of the g_(j), thatis, g=Σ_(j=1) ^(k)g_(j), as shown in 334.

At 315, platform A can receive value g from platform B. The sum of h andg is equal to the product of vectors x and y. That is, xy=h+g. As such,at 315, platform A receives the value g from platform B. At 335,platform A sends the value h to platform B. At 316, platform A cancompute a product of vectors x and y by computing a sum of h and g,which are the manipulated data of the vectors x and y. Similarly, at336, platform B can also compute the product of vectors x and y bycomputing a sum of h and g.

Given that x can the i-th row of matrix A, A_(i) ^(T), and y can be thej-th column of matrix B, B_(j), the element Z_(ij) of the product ofmatrix A and matrix B can be obtained as Z_(ij)=A_(i) ^(T)B_(j)=xy.Accordingly, the matrix product Z of matrix A and matrix B can beobtained.

By substituting matrix U with A, and substituting diag(S·I_(M)) with B,the matrix product S·diag(S·I_(M)) can be obtained. Similarly, bysubstituting matrix U with A, and substituting S with B, the matrixproduct U·S can be obtained. With the matrix products U·diag(S·I_(M))and U·S, platform A can update the U or V, for example according toEquations (3) and (4), as described with respect to 206 in FIG. 2.

Thus, platform A 302 can generate predicted rating data based on theupdated user-feature data and item-feature data. In someimplementations, platform A 302 can, among other things, generaterecommendations for a particular item for a particular customer based onthe predicted rating data. The above described techniques andcomputation can be achieved without the need of a trusted authority asoverhead.

FIG. 4 is a flowchart of an example method 400 for generating arecommendation to a user by an item rating and recommendation platformusing a secret sharing scheme without a trusted initializer, accordingto an implementation. For clarity of presentation, the description thatfollows generally describes method 400 in the context of the otherfigures in this description. For example, the item rating andrecommendation platform can be platform A as described with respect toFIGS. 1-3. However, it will be understood that method 400 may beperformed, for example, by any suitable system, environment, software,and hardware, or a combination of systems, environments, software, andhardware, as appropriate. In some implementations, various steps ofmethod 400 can be run in parallel, in combination, in loops, or in anyorder.

At 402, rating data including, but not limited to, respective ratings ofa number of items with respect to a number of users, is identified bythe item rating and recommendation platform. Identifying the rating dataincludes receiving (e.g., from another device), retrieving or loadingfrom a memory, or determining the rating data based on one or moreinputs to method 400. The rating data can include rating data Rdescribed with respect to FIGS. 1-3. For example, the rating data caninclude actual rating or mapped rating based on existing user activitiesrelative to the items. From 402, method 400 proceeds to 404.

At 404, user-feature data including a number of user featurescontributing to the respective ratings of the number of items withrespect to the number of users are identified by the item rating andrecommendation platform. Identifying the user-feature data includesreceiving (e.g., from another device), retrieving or loading from amemory, or determining the user-feature data based on one or more inputsto method 400. In some implementations, the user-feature data can berepresented by a matrix U. The user-feature data can includeuser-feature data U described with respect to FIGS. 1-3. From 404,method 400 proceeds to 406.

At 406, item-feature data including a number of item featurescontributing to the respective ratings of the number of items withrespect to the number of users are identified by the item rating andrecommendation platform. In some implementations, identifying theitem-feature data includes receiving (e.g., from another device),retrieving or loading from a memory, or determining the item-featuredata based on one or more inputs to method 400. The item-feature datacan include item-feature data V described with respect to FIGS. 1-3.From 406, method 400 proceeds to 408.

At 408, the item rating and recommendation platform receives a number ofmanipulated social network data (e.g., g described with respect to FIG.3) computed based on social network data (e.g., y, a vector of thesocial network data matrix S) from a social network platform via asecret sharing scheme without a trusted initializer from a socialnetwork platform. Further, the social network data indicate socialrelationships between any two of the number of users. In the secretsharing scheme without the trust initializer, the social networkplatform shares with the item rating and recommendation platform thenumber of manipulated social network data (e.g., g) without disclosingthe social network data (e.g., y), where the manipulated social networkdata are computed based on the social network data and a first number ofrandom variables (e.g., b_(j), d_(j)). In some implementations, in thesecret sharing scheme without the trusted initializer, the item ratingand recommendation platform shares with the social network platform anumber of manipulated user-feature data (e.g., h) without disclosing theuser-feature data (e.g., x, a vector of the user-feature data matrix U),where the number of manipulated user-feature data are computed based onthe user-feature data and a second number of random variables (e.g.,a_(j), c_(j)). In some implementations, the manipulated social networkdata are manipulated such that one cannot recover the original socialnetwork data from the manipulated social network data.

In some implementations, the secret sharing scheme without the trustedinitializer is used for solving an optimization problem as describedwith respect to formula (2), for example, as described with respect toFIG. 3. For example, in the secret sharing scheme without the trustedinitializer, the item rating and recommendation platform obtains avector of the user-feature data (e.g., x) and generates firstmanipulated user-feature data (e.g., x′) based on the vector of theuser-feature data (e.g., x) and a second number of random variables(e.g., a_(j), c_(j)). The item rating and recommendation platformtransmits to the social network platform first manipulated user-featuredata (e.g., x′) and receives from the social network platform firstmanipulated social network data (e.g., y′) computed based on the socialnetwork data (e.g., y) and the first number of random variables (e.g.,b_(j), d_(j)).

The item rating and recommendation platform can generate one of themanipulated user-feature data (e.g., h) based on two or more of thefirst manipulated user-feature data (e.g., x′), the first manipulatedsocial network data (e.g., y′), or the second number of random variables(e.g., a_(j), c_(j)). Similarly, the social network platform cangenerate one of the manipulated social network data (e.g., g) computedbased on two or more of the first manipulated user-feature data (e.g.,x′), the first manipulated social network data (e.g., y′), or the firstnumber of random variables (e.g., b_(j), d_(j)). From 408, method 400proceeds to 410.

At 410, the item rating and recommendation platform sends a number ofthe manipulated user-feature data (e.g., a number of h) to the socialnetwork platform without disclosing the user-feature data (e.g., x orany vector of U), for example, as described with respect to FIG. 3. From410, method 400 proceeds to 412.

At 412, the item rating and recommendation platform updates theuser-feature data based on the rating data and the number of themanipulated social network data. In some implementations, updating theuser-feature data includes computing a product of the user-feature dataand the social network data by computing a sum of one of the number ofthe manipulated user-feature data (e.g., h) and one of the number of themanipulated social network data (e.g., g). Further, the mentionedcomputation can include computing for each entry in the product of theuser-feature data and the social network data and computing one of thenumber of the manipulated user-feature data and one of the number of themanipulated social network data without the social network data. In someimplementations, the user-feature data includes solving an optimizationproblem to minimize a weighted sum of a difference between the predictedrating data and rating data, the user-feature data weighted by thesocial network data, and an overfitting-preventing term, for example, asshown in formula (2). In some implementations, updating the user-featuredata includes updating the user-feature data according to the exampletechniques described with respect to FIG. 3. From 412, method 400proceeds to 414.

At 414, the item rating and recommendation platform updates item-featuredata based on the rating data and the user-feature data, for example,according to the example techniques described with respect to FIG. 3.From 414, method 400 proceeds to 416.

At 416, predicted rating data of the number of items with respect to thenumber of users based on the product of the user-feature data and theitem-feature data are generated. In some implementations, the predictedrating data can be generated, for example, based on the product of theuser-feature data and the item-feature data, according to equation (1).In some implementations, the generated rating can be better aligned withthe users' needs or preferences because of the incorporation of thesocial network. From 416, method 400 proceeds to 418

At 418, a recommendation of a particular item for a particular userbased on the predicted rating data is generated. In someimplementations, one or more items with top predicted ratings withrespect to the particular user can be recommended to the particularuser. The recommendation of a particular item can be a recommendation ofa movie or a shopping item. For example, NETFLIX can better recommend amovie or AMAZON can better recommend an item based on the social networkdata. In some implementations, the recommendation of the particular itemfor the particular item can be output, for example, via a user interface(UI). In some implementations, the selected topics can be displayed in achat box, a pop window, etc. in a graphic user interface (GUI) or otherUIs for the user's review and consideration. From 418, method 400 stops.

FIG. 5 is a block diagram of an example computer system 500 used toprovide computational functionalities associated with describedalgorithms, methods, functions, processes, flows, and procedures, asdescribed in the instant disclosure, according to an implementation. Theillustrated computer 502 is intended to encompass any computing devicesuch as a server, desktop computer, laptop/notebook computer, wirelessdata port, smart phone, personal data assistant (PDA), tablet computingdevice, one or more processors within these devices, or any othersuitable processing device, including physical or virtual instances (orboth) of the computing device. Additionally, the computer 502 mayinclude a computer that includes an input device, such as a keypad,keyboard, touch screen, or other device that can accept userinformation, and an output device that conveys information associatedwith the operation of the computer 502, including digital data, visual,or audio information (or a combination of information), or agraphical-type user interface (UI) (or GUI).

The computer 502 can serve in a role as a client, network component, aserver, a database or other persistency, or any other component (or acombination of roles) of a computer system for performing the subjectmatter described in the instant disclosure. The illustrated computer 502is communicably coupled with a network 530. In some implementations, oneor more components of the computer 502 may be configured to operatewithin environments, including cloud-computing-based, local, global, orother environment (or a combination of environments).

At a high level, the computer 502 is an electronic computing deviceoperable to receive, transmit, process, store, or manage data andinformation associated with the described subject matter. According tosome implementations, the computer 502 may also include or becommunicably coupled with an application server, e-mail server, webserver, caching server, streaming data server, or other server (or acombination of servers).

The computer 502 can receive requests over network 530 from a clientapplication (for example, executing on another computer 502) and respondto the received requests by processing the received requests using anappropriate software application(s). In addition, requests may also besent to the computer 502 from internal users (for example, from acommand console or by other appropriate access method), external orthird-parties, other automated applications, as well as any otherappropriate entities, individuals, systems, or computers.

Each of the components of the computer 502 can communicate using asystem bus 503. In some implementations, any or all of the components ofthe computer 502, hardware or software (or a combination of bothhardware and software), may interface with each other or the interface504 (or a combination of both), over the system bus 503 using anapplication programming interface (API) 512 or a service layer 513 (or acombination of the API 512 and service layer 513). The API 512 mayinclude specifications for routines, data structures, and objectclasses. The API 512 may be either computer-language independent ordependent and refer to a complete interface, a single function, or evena set of APIs. The service layer 513 provides software services to thecomputer 502 or other components (whether or not illustrated) that arecommunicably coupled to the computer 502. The functionality of thecomputer 502 may be accessible for all service consumers using thisservice layer. Software services, such as those provided by the servicelayer 513, provide reusable, defined functionalities through a definedinterface. For example, the interface may be software written in JAVA,C++, or other suitable language providing data in extensible markuplanguage (XML) format or other suitable format. While illustrated as anintegrated component of the computer 502, alternative implementationsmay illustrate the API 512 or the service layer 513 as stand-alonecomponents in relation to other components of the computer 502 or othercomponents (whether or not illustrated) that are communicably coupled tothe computer 502. Moreover, any or all parts of the API 512 or theservice layer 513 may be implemented as child or sub-modules of anothersoftware module, enterprise application, or hardware module withoutdeparting from the scope of this disclosure.

The computer 502 includes an interface 504. Although illustrated as asingle interface 504 in FIG. 5, two or more interfaces 504 may be usedaccording to particular needs, desires, or particular implementations ofthe computer 502. The interface 504 is used by the computer 502 forcommunicating with other systems that are connected to the network 530(whether illustrated or not) in a distributed environment. Generally,the interface 504 includes logic encoded in software or hardware (or acombination of software and hardware) and is operable to communicatewith the network 530. More specifically, the interface 504 may includesoftware supporting one or more communication protocols associated withcommunications such that the network 530 or interface's hardware isoperable to communicate physical signals within and outside of theillustrated computer 502.

The computer 502 includes a processor 505. Although illustrated as asingle processor 505 in FIG. 5, two or more processors may be usedaccording to particular needs, desires, or particular implementations ofthe computer 502. Generally, the processor 505 executes instructions andmanipulates data to perform the operations of the computer 502 and anyalgorithms, methods, functions, processes, flows, and procedures asdescribed in the instant disclosure.

The computer 502 also includes a database 506 that can hold data for thecomputer 502 or other components (or a combination of both) that can beconnected to the network 530 (whether illustrated or not). For example,database 506 can be an in-memory, conventional, or other type ofdatabase storing data consistent with this disclosure. In someimplementations, database 506 can be a combination of two or moredifferent database types (for example, a hybrid in-memory andconventional database) according to particular needs, desires, orparticular implementations of the computer 502 and the describedfunctionality. Although illustrated as a single database 506 in FIG. 5,two or more databases (of the same or combination of types) can be usedaccording to particular needs, desires, or particular implementations ofthe computer 502 and the described functionality. While database 506 isillustrated as an integral component of the computer 502, in alternativeimplementations, database 506 can be external to the computer 502. Asillustrated, the database 506 holds previously described rating data516, user-feature data 518, item-feature data 526 and social networkdata 528.

The computer 502 also includes a memory 507 that can hold data for thecomputer 502 or other components (or a combination of both) that can beconnected to the network 530 (whether illustrated or not). Memory 507can store any data consistent with this disclosure. In someimplementations, memory 507 can be a combination of two or moredifferent types of memory (for example, a combination of semiconductorand magnetic storage) according to particular needs, desires, orparticular implementations of the computer 502 and the describedfunctionality. Although illustrated as a single memory 507 in FIG. 5,two or more memories 507 (of the same or combination of types) can beused according to particular needs, desires, or particularimplementations of the computer 502 and the described functionality.While memory 507 is illustrated as an integral component of the computer502, in alternative implementations, memory 507 can be external to thecomputer 502.

The application 508 is an algorithmic software engine providingfunctionality according to particular needs, desires, or particularimplementations of the computer 502, particularly with respect tofunctionality described in this disclosure. For example, application 508can serve as one or more components, modules, or applications. Further,although illustrated as a single application 508, the application 508may be implemented as multiple applications 508 on the computer 502. Inaddition, although illustrated as integral to the computer 502, inalternative implementations, the application 508 can be external to thecomputer 502.

The computer 502 can also include a power supply 514. The power supply514 can include a rechargeable or non-rechargeable battery that can beconfigured to be either user- or non-user-replaceable. In someimplementations, the power supply 514 can include power-conversion ormanagement circuits (including recharging, standby, or other powermanagement functionality). In some implementations, the power-supply 514can include a power plug to allow the computer 502 to be plugged into awall socket or other power source to, for example, power the computer502 or recharge a rechargeable battery.

There may be any number of computers 502 associated with, or externalto, a computer system containing computer 502, each computer 502communicating over network 530. Further, the term “client,” “user,” andother appropriate terminology may be used interchangeably, asappropriate, without departing from the scope of this disclosure.Moreover, this disclosure contemplates that many users may use onecomputer 502, or that one user may use multiple computers 502.

Described implementations of the subject matter can include one or morefeatures, alone or in combination.

For example, in a first implementation, a computer-implemented methodincluding: identifying, by an item rating and recommendation platform,rating data including respective ratings of a number of items withrespect to a number of users; identifying, by the item rating andrecommendation platform, user-feature data including a number of userfeatures contributing to the respective ratings of the number of itemswith respect to the number of users; receiving, from a social networkplatform by the item rating and recommendation platform via a secretsharing scheme without a trusted initializer, a number of manipulatedsocial network data computed based on social network data and a firstnumber of random variables, wherein the social network data indicatesocial relationships between any two of the number of users, wherein, inthe secret sharing scheme without the trust initializer, the socialnetwork platform shares with the item rating and recommendation platformthe number of manipulated social network data without disclosing thesocial network data; and updating, by the item rating and recommendationplatform, the user-feature data based on the rating data and the numberof the manipulated social network data.

In a second implementation, a non-transitory, computer-readable mediumstoring one or more instructions executable by a computer system toperform operations including: identifying, by an item rating andrecommendation platform, rating data including respective ratings of anumber of items with respect to a number of users; identifying, by theitem rating and recommendation platform, user-feature data including anumber of user features contributing to the respective ratings of thenumber of items with respect to the number of users; receiving, from asocial network platform by the item rating and recommendation platformvia a secret sharing scheme without a trusted initializer, a number ofmanipulated social network data computed based on social network dataand a first number of random variables, wherein the social network dataindicate social relationships between any two of the number of users,wherein, in the secret sharing scheme without the trust initializer, thesocial network platform shares with the item rating and recommendationplatform the number of manipulated social network data withoutdisclosing the social network data; and updating, by the item rating andrecommendation platform, the user-feature data based on the rating dataand the number of the manipulated social network data.

In a third implementation, a computer-implemented system, including: oneor more computers; and one or more computer memory devices interoperablycoupled with the one or more computers and having tangible,non-transitory, machine-readable media storing instructions, that whenexecuted by the one or more computers, perform operations including:identifying, by an item rating and recommendation platform, rating dataincluding respective ratings of a number of items with respect to anumber of users; identifying, by the item rating and recommendationplatform, user-feature data including a number of user featurescontributing to the respective ratings of the number of items withrespect to the number of users; receiving, from a social networkplatform by the item rating and recommendation platform via a secretsharing scheme without a trusted initializer, a number of manipulatedsocial network data computed based on social network data and a firstnumber of random variables, wherein the social network data indicatesocial relationships between any two of the number of users, wherein, inthe secret sharing scheme without the trust initializer, the socialnetwork platform shares with the item rating and recommendation platformthe number of manipulated social network data without disclosing thesocial network data; and updating, by the item rating and recommendationplatform, the user-feature data based on the rating data and the numberof the manipulated social network data.

The foregoing and other described implementations can each, optionally,include one or more of the following features:

A first feature, combinable with any of the following features, wherein,in the secret sharing scheme without the trust initializer, the itemrating and recommendation platform shares with the social networkplatform a number of manipulated user-feature data without disclosingthe user-feature data, and wherein the number of manipulateduser-feature data are computed based on the user-feature data and asecond number of random variables.

A second feature, combinable with any of the previous or followingfeatures, wherein updating the user-feature data includes computing aproduct of the user-feature data and the social network data based on asum of one of the number of the manipulated user-feature data and one ofthe number of the manipulated social network data.

A third feature, combinable with any of the previous or followingfeatures, wherein computing a product of the user-feature data and thesocial network data by computing a sum of one of the number of themanipulated user-feature data and one of the number of the manipulatedsocial network data without the social network data includes: for eachentry in the product of the user-feature data and the social networkdata, computing one of the number of the manipulated user-feature dataand one of the number of the manipulated social network data without thesocial network data.

A fourth feature, combinable with any of the previous or followingfeatures, the method or the operations further including: identifyingitem-feature data including a number of item features contributing tothe respective ratings of the number of items with respect to the numberof users, wherein a product of the user-feature data and theitem-feature data results in an estimate of the rating data; andupdating the item-feature data based on the rating data, theuser-feature data, and the number of the manipulated social networkdata.

A fifth feature, combinable with any of the previous or followingfeatures, the method or the operations further including: generatingpredicted rating data of the number of items with respect to the numberof users based on the product of the user-feature data and theitem-feature data; and generating a recommendation of a particular itemfor a particular customer based on the predicted rating data.

A sixth feature, combinable with any of the previous or followingfeatures, wherein updating the user-feature data includes solving anoptimization problem to minimize a weighted sum of a difference betweenthe predicted rating data and rating data, the user-feature dataweighted by the social network data, and an overfitting-preventing term.

A seventh feature, combinable with any of the previous or followingfeatures, wherein solving an optimization problem including solving anequation:

${{\underset{U_{i},V_{j}}{{argmin}\;}L} = {{\sum_{{u_{i} \in u},{v_{j} \in v}}\left( {R_{ij} - {U_{i}^{T}V_{j}}} \right)^{2}} + {\lambda_{1}{\sum_{u_{i},{u_{k} \in u}}{S_{ik}\left( {U_{i} - U_{k}} \right)}^{2}}} + {\lambda_{2}\left( {{{\sum_{u_{i} \in u}U_{i}}}^{2} + {{\sum_{v_{j} \in v}V_{i}}}^{2}} \right)}}},$wherein: U_(i) represents a vector of the user-feature datacorresponding to user i; V_(j) represents a vector of the item-featuredata corresponding to item j; R_(ij) represents a rating of item j byuser i; S_(ik) represents a social relationship between user i and userk; λ₁ represents a predefined weight associated with the social networkdata; and λ₂ represents a predefined weight to prevent overfitting.

A eighth feature, combinable with any of the previous or followingfeatures, the method or the operations further including: in the secretsharing scheme without the trusted initializer, obtaining, by the itemrating and recommendation platform, a vector of the user-feature data;generating , by the item rating and recommendation platform, firstmanipulated user-feature data based on the vector of the user-featuredata and the second number of random variables; transmitting, by theitem rating and recommendation platform to the social network platform,first manipulated user-feature data; receiving, by the item rating andrecommendation platform from the social network platform, firstmanipulated social network data computed based on the social networkdata and the first number of random variables; and generating, by theitem rating and recommendation platform, one of the manipulateduser-feature data based on two or more of the first manipulateduser-feature data, the first manipulated social network data, or thesecond number of random variables.

Implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, in tangibly embodied computer software or firmware, incomputer hardware, including the structures disclosed in thisspecification and their structural equivalents, or in combinations ofone or more of them. Software implementations of the described subjectmatter can be implemented as one or more computer programs, that is, oneor more modules of computer program instructions encoded on a tangible,non-transitory, computer-readable computer-storage medium for executionby, or to control the operation of, data processing apparatus.Alternatively, or additionally, the program instructions can be encodedin/on an artificially generated propagated signal, for example, amachine-generated electrical, optical, or electromagnetic signal that isgenerated to encode information for transmission to suitable receiverapparatus for execution by a data processing apparatus. Thecomputer-storage medium can be a machine-readable storage device, amachine-readable storage substrate, a random or serial access memorydevice, or a combination of computer-storage mediums. Configuring one ormore computers means that the one or more computers have installedhardware, firmware, or software (or combinations of hardware, firmware,and software) so that when the software is executed by the one or morecomputers, particular computing operations are performed.

The term “real-time,” “real time,” “realtime,” “real (fast) time (RFT),”“near(ly) real-time (NRT),” “quasi real-time,” or similar terms (asunderstood by one of ordinary skill in the art), means that an actionand a response are temporally proximate such that an individualperceives the action and the response occurring substantiallysimultaneously. For example, the time difference for a response todisplay (or for an initiation of a display) of data following theindividual's action to access the data may be less than 1 ms, less than1 sec., or less than 5 secs. While the requested data need not bedisplayed (or initiated for display) instantaneously, it is displayed(or initiated for display) without any intentional delay, taking intoaccount processing limitations of a described computing system and timerequired to, for example, gather, accurately measure, analyze, process,store, or transmit the data.

The terms “data processing apparatus,” “computer,” or “electroniccomputer device” (or equivalent as understood by one of ordinary skillin the art) refer to data processing hardware and encompass all kinds ofapparatus, devices, and machines for processing data, including by wayof example, a programmable processor, a computer, or multiple processorsor computers. The apparatus can also be, or further include specialpurpose logic circuitry, for example, a central processing unit (CPU),an FPGA (field programmable gate array), or an ASIC(application-specific integrated circuit). In some implementations, thedata processing apparatus or special purpose logic circuitry (or acombination of the data processing apparatus or special purpose logiccircuitry) may be hardware- or software-based (or a combination of bothhardware- and software-based). The apparatus can optionally include codethat creates an execution environment for computer programs, forexample, code that constitutes processor firmware, a protocol stack, adatabase management system, an operating system, or a combination ofexecution environments. The present disclosure contemplates the use ofdata processing apparatuses with or without conventional operatingsystems, for example LINUX, UNIX, WINDOWS, MAC OS, ANDROID, IOS, or anyother suitable conventional operating system.

A computer program, which may also be referred to or described as aprogram, software, a software application, a module, a software module,a script, or code can be written in any form of programming language,including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program may, butneed not, correspond to a file in a file system. A program can be storedin a portion of a file that holds other programs or data, for example,one or more scripts stored in a markup language document, in a singlefile dedicated to the program in question, or in multiple coordinatedfiles, for example, files that store one or more modules, sub-programs,or portions of code. A computer program can be deployed to be executedon one computer or on multiple computers that are located at one site ordistributed across multiple sites and interconnected by a communicationnetwork.

While portions of the programs illustrated in the various figures areshown as individual modules that implement the various features andfunctionality through various objects, methods, or other processes, theprograms may instead include a number of sub-modules, third-partyservices, components, libraries, and such, as appropriate. Conversely,the features and functionality of various components can be combinedinto single components, as appropriate. Thresholds used to makecomputational determinations can be statically, dynamically, or bothstatically and dynamically determined.

The methods, processes, or logic flows described in this specificationcan be performed by one or more programmable computers executing one ormore computer programs to perform functions by operating on input dataand generating output. The methods, processes, or logic flows can alsobe performed by, and apparatus can also be implemented as, specialpurpose logic circuitry, for example, a CPU, an FPGA, or an ASIC.

Computers suitable for the execution of a computer program can be basedon general or special purpose microprocessors, both, or any other kindof CPU. Generally, a CPU will receive instructions and data from andwrite to a memory. The essential elements of a computer are a CPU, forperforming or executing instructions, and one or more memory devices forstoring instructions and data. Generally, a computer will also include,or be operatively coupled to, receive data from or transfer data to, orboth, one or more mass storage devices for storing data, for example,magnetic, magneto-optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, for example, a mobile telephone, a personal digitalassistant (PDA), a mobile audio or video player, a game console, aglobal positioning system (GPS) receiver, or a portable storage device,for example, a universal serial bus (USB) flash drive, to name just afew.

Computer-readable media (transitory or non-transitory, as appropriate)suitable for storing computer program instructions and data includes allforms of permanent/non-permanent or volatile/non-volatile memory, mediaand memory devices, including by way of example semiconductor memorydevices, for example, random access memory (RAM), read-only memory(ROM), phase change memory (PRAM), static random access memory (SRAM),dynamic random access memory (DRAM), erasable programmable read-onlymemory (EPROM), electrically erasable programmable read-only memory(EEPROM), and flash memory devices; magnetic devices, for example, tape,cartridges, cassettes, internal/removable disks; magneto-optical disks;and optical memory devices, for example, digital video disc (DVD),CD-ROM, DVD+/−R, DVD-RAM, DVD-ROM, HD-DVD, and BLURAY, and other opticalmemory technologies. The memory may store various objects or data,including caches, classes, frameworks, applications, modules, backupdata, jobs, web pages, web page templates, data structures, databasetables, repositories storing dynamic information, and any otherappropriate information including any parameters, variables, algorithms,instructions, rules, constraints, or references thereto. Additionally,the memory may include any other appropriate data, such as logs,policies, security or access data, reporting files, as well as others.The processor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, for example, a CRT (cathode ray tube), LCD(liquid crystal display), LED (Light Emitting Diode), or plasma monitor,for displaying information to the user and a keyboard and a pointingdevice, for example, a mouse, trackball, or trackpad by which the usercan provide input to the computer. Input may also be provided to thecomputer using a touchscreen, such as a tablet computer surface withpressure sensitivity, a multi-touch screen using capacitive or electricsensing, or other type of touchscreen. Other kinds of devices can beused to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, forexample, visual feedback, auditory feedback, or tactile feedback; andinput from the user can be received in any form, including acoustic,speech, or tactile input. In addition, a computer can interact with auser by sending documents to and receiving documents from a device thatis used by the user; for example, by sending web pages to a web browseron a user's client device in response to requests received from the webbrowser.

The term “graphical user interface,” or “GUI,” may be used in thesingular or the plural to describe one or more graphical user interfacesand each of the displays of a particular graphical user interface.Therefore, a GUI may represent any graphical user interface, includingbut not limited to, a web browser, a touch screen, or a command lineinterface (CLI) that processes information and efficiently presents theinformation results to the user. In general, a GUI may include a numberof user interface (UI) elements, some or all associated with a webbrowser, such as interactive fields, pull-down lists, and buttons. Theseand other UI elements may be related to or represent the functions ofthe web browser.

Implementations of the subject matter described in this specificationcan be implemented in a computing system that includes a back-endcomponent, for example, as a data server, or that includes a middlewarecomponent, for example, an application server, or that includes afront-end component, for example, a client computer having a graphicaluser interface or a Web browser through which a user can interact withan implementation of the subject matter described in this specification,or any combination of one or more such back-end, middleware, orfront-end components. The components of the system can be interconnectedby any form or medium of wireline or wireless digital data communication(or a combination of data communication), for example, a communicationnetwork. Examples of communication networks include a local area network(LAN), a radio access network (RAN), a metropolitan area network (MAN),a wide area network (WAN), Worldwide Interoperability for MicrowaveAccess (WIMAX), a wireless local area network (WLAN) using, for example,802.11 a/b/g/n or 802.20 (or a combination of 802.11x and 802.20 orother protocols consistent with this disclosure), all or a portion ofthe Internet, or any other communication system or systems at one ormore locations (or a combination of communication networks). The networkmay communicate with, for example, Internet Protocol (IP) packets, FrameRelay frames, Asynchronous Transfer Mode (ATM) cells, voice, video,data, or other suitable information (or a combination of communicationtypes) between network addresses.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinvention or on the scope of what may be claimed, but rather asdescriptions of features that may be specific to particularimplementations of particular inventions. Certain features that aredescribed in this specification in the context of separateimplementations can also be implemented, in combination, in a singleimplementation. Conversely, various features that are described in thecontext of a single implementation can also be implemented in multipleimplementations, separately, or in any suitable sub-combination.Moreover, although previously described features may be described asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can, in some cases, beexcised from the combination, and the claimed combination may bedirected to a sub-combination or variation of a sub-combination.

Particular implementations of the subject matter have been described.Other implementations, alterations, and permutations of the describedimplementations are within the scope of the following claims as will beapparent to those skilled in the art. While operations are depicted inthe drawings or claims in a particular order, this should not beunderstood as requiring that such operations be performed in theparticular order shown or in sequential order, or that all illustratedoperations be performed (some operations may be considered optional), toachieve desirable results. In certain circumstances, multitasking orparallel processing (or a combination of multitasking and parallelprocessing) may be advantageous and performed as deemed appropriate.

Moreover, the separation or integration of various system modules andcomponents in the previously described implementations should not beunderstood as requiring such separation or integration in allimplementations, and it should be understood that the described programcomponents and systems can generally be integrated together in a singlesoftware item or packaged into multiple software items.

Accordingly, the previously described example implementations do notdefine or constrain this disclosure. Other changes, substitutions, andalterations are also possible without departing from the spirit andscope of this disclosure.

Furthermore, any claimed implementation is considered to be applicableto at least a computer-implemented method; a non-transitory,computer-readable medium storing computer-readable instructions toperform the computer-implemented method; and a computer system includinga computer memory interoperably coupled with a hardware processorconfigured to perform the computer-implemented method or theinstructions stored on the non-transitory, computer-readable medium.

What is claimed is:
 1. A computer-implemented method, comprising:identifying, by an item rating and recommendation platform, rating datacomprising respective ratings of a plurality of items with respect to aplurality of users; identifying, by the item rating and recommendationplatform, user-feature data comprising a plurality of user featurescontributing to the respective ratings of the plurality of items withrespect to the plurality of users; identifying item-feature datacomprising a plurality of item features contributing to the respectiveratings of the plurality of items with respect to the plurality ofusers, wherein a product of the user-feature data and the item-featuredata results in an estimate of the rating data; receiving, from a socialnetwork platform by the item rating and recommendation platform, aplurality of manipulated social network data computed based on socialnetwork data and a first number of random variables, wherein the socialnetwork data indicate social relationships between any two of theplurality of users, wherein: the social network platform shares with theitem rating and recommendation platform the plurality of manipulatedsocial network data without disclosing the social network data; and theitem rating and recommendation platform shares with the social networkplatform a plurality of manipulated user-feature data without disclosingthe user-feature data, and wherein the plurality of manipulateduser-feature data are computed based on the user-feature data and asecond number of random variables; computing, by the item rating andrecommendation platform, a product of the user-feature data and thesocial network data based on a sum of one of the plurality of themanipulated user-feature data and one of the plurality of themanipulated social network data without the social network data;updating, by the item rating and recommendation platform, theuser-feature data based on the rating data and the plurality of themanipulated social network data; updating the item-feature data based onthe rating data. the user-feature data, and the plurality of themanipulated social network data; and generating predicted rating data ofthe plurality of items with respect to the plurality of users based onthe product of the user-feature data and the item-feature data; whereinupdating the user-feature data comprises solving an optimization problemto minimize a weighted sum of a difference between the predicted ratingdata and the rating data, the user-feature data weighted by the socialnetwork data, and an overfitting-preventing term; and wherein solving anoptimization problem comprising solving an equation:${\underset{U_{i},V_{j}}{{argmin}\;}L} = {{\sum_{{u_{i} \in u},{v_{j} \in v}}\left( {R_{ij} - {U_{i}^{T}V_{j}}} \right)^{2}} + {\lambda_{1}{\sum_{u_{i},{u_{k} \in u}}{S_{ik}\left( {U_{i} - U_{k}} \right)}^{2}}} + {\lambda_{2}\left( {{{\sum_{u_{i} \in u}U_{i}}}^{2} + {{\sum_{v_{j} \in v}V_{i}}}^{2}} \right)}}$or the equation modified by one or more scalars or constants, wherein:U_(i) represents a vector of the user-feature data corresponding to useri; V_(j) represents a vector of the item-feature data corresponding toitem j; R_(ij) represents a rating of item j by user i; S_(ik)represents a social relationship between user i and user k; λ₁represents a predefined weight associated with the social network data;and λ₂ represents a predefined weight to prevent overfitting.
 2. Thecomputer-implemented method of claim 1, further comprising: obtaining,by the item rating and recommendation platform, a vector of theuser-feature data; generating, by the item rating and recommendationplatform, first manipulated user-feature data based on the vector of theuser-feature data and the second number of random variables;transmitting, by the item rating and recommendation platform to thesocial network platform, first manipulated user-feature data; receiving,by the item rating and recommendation platform from the social networkplatform, first manipulated social network data computed based on thesocial network data and the first number of random variables; andgenerating, by the item rating and recommendation platform, one of themanipulated user-feature data based on two or more of the firstmanipulated user-feature data, the first manipulated social networkdata, or the second number of random variables.
 3. Thecomputer-implemented method of claim 1, wherein computing a product ofthe user-feature data and the social network data by computing a sum ofone of the plurality of the manipulated user-feature data and one of theplurality of the manipulated social network data without the socialnetwork data comprises: for each entry in the product of theuser-feature data and the social network data, computing one of theplurality of the manipulated user-feature data and one of the pluralityof the manipulated social network data without the social network data.4. The computer-implemented method of claim 1, further comprising:generating a recommendation of a particular item for a particularcustomer based on the predicted rating data.
 5. A non-transitory,computer-readable medium storing one or more instructions executable bya computer system to perform operations comprising: identifying, by anitem rating and recommendation platform, rating data comprisingrespective ratings of a plurality of items with respect to a pluralityof users; identifying, by the item rating and recommendation platform,user-feature data comprising a plurality of user features contributingto the respective ratings of the plurality of items with respect to theplurality of users; identifying item-feature data comprising a pluralityof item features contributing to the respective ratings of the pluralityof items with respect to the plurality of users, wherein a product ofthe user-feature data and the item-feature data results in an estimateof the rating data; receiving, from a social network platform by theitem rating and recommendation platform, a plurality of manipulatedsocial network data computed based on social network data and a firstnumber of random variables, wherein the social network data indicatesocial relationships between any two of the plurality of users, wherein:the social network platform shares with the item rating andrecommendation platform the plurality of manipulated social network datawithout disclosing the social network data; and the item rating andrecommendation platform shares with the social network platform aplurality of manipulated user-feature data without disclosing theuser-feature data, and wherein the plurality of manipulated user-featuredata are computed based on the user-feature data and a second number ofrandom variables; computing, by the item rating and recommendationplatform, a product of the user-feature data and the social network databased on a sum of one of the plurality of the manipulated user-featuredata and one of the plurality of the manipulated social network datawithout the social network data; updating, by the item rating andrecommendation platform, the user-feature data based on the rating dataand the plurality of the manipulated social network data; updating theitem-feature data based on the rating data, the user-feature data, andthe plurality of the manipulated social network data; and generatingpredicted rating data of the plurality of items with respect to theplurality of users based on the product of the user-feature data and theitem-feature data; wherein updating the user-feature data comprisessolving an optimization problem to minimize a weighted sum of adifference between the predicted rating data and the rating data, theuser-feature data weighted by the social network data, and anoverfitting-preventing term; and wherein solving an optimization problemcomprising solving an equation:${\underset{U_{i},V_{j}}{{argmin}\;}L} = {{\sum_{{u_{i} \in u},{v_{j} \in v}}\left( {R_{ij} - {U_{i}^{T}V_{j}}} \right)^{2}} + {\lambda_{1}{\sum_{u_{i},{u_{k} \in u}}{S_{ik}\left( {U_{i} - U_{k}} \right)}^{2}}} + {\lambda_{2}\left( {{{\sum_{u_{i} \in u}U_{i}}}^{2} + {{\sum_{v_{j} \in v}V_{i}}}^{2}} \right)}}$or the equation modified b one or more scalars or constants, wherein:U_(i) represents a vector of the user-feature data corresponding to useri; V_(j) represents a vector of the item-feature data corresponding toitem j; R_(ij) represents a rating of item j by user i; S_(ik)represents a social relationship between user i and user k; λ₁represents a predefined weight associated with the social network data;and λ₂ represents a predefined weight to prevent overfitting.
 6. Thenon-transitory, computer-readable medium of claim 5, the operationsfurther comprising: obtaining, by the item rating and recommendationplatform, a vector of the user-feature data; generating, by the itemrating and recommendation platform, first manipulated user-feature databased on the vector of the user-feature data and the second number ofrandom variables; transmitting, by the item rating and recommendationplatform to the social network platform, first manipulated user-featuredata; receiving, by the item rating and recommendation platform from thesocial network platform, first manipulated social network data computedbased on the social network data and the first number of randomvariables; and generating, by the item rating and recommendationplatform, one of the manipulated user-feature data based on two or moreof the first manipulated user-feature data, the first manipulated socialnetwork data, or the second number of random variables.
 7. Thenon-transitory, computer-readable medium of claim 5, wherein computing aproduct of the user-feature data and the social network data bycomputing a sum of one of the plurality of the manipulated user-featuredata and one of the plurality of the manipulated social network datawithout the social network data comprises: for each entry in the productof the user-feature data and the social network data, computing one ofthe plurality of the manipulated user-feature data and one of theplurality of the manipulated social network data without the socialnetwork data.
 8. A computer-implemented system, comprising: one or morecomputers; and one or more computer memory devices interoperably coupledwith the one or more computers and having tangible, non-transitory,machine-readable media storing instructions, that when executed by theone or more computers, perform operations comprising: identifying, by anitem rating and recommendation platform, rating data comprisingrespective ratings of a plurality of items with respect to a pluralityof users; identifying, by the item rating and recommendation platform,user-feature data comprising a plurality of user features contributingto the respective ratings of the plurality of items with respect to theplurality of users; identifying item-feature data comprising a pluralityof item features contributing to the respective ratings of the pluralityof items with respect to the plurality of users, wherein a product ofthe user-feature data and the item-feature data results in an estimateof the rating data; receiving, from a social network platform by theitem rating and recommendation platform, a plurality of manipulatedsocial network data computed based on social network data and a firstnumber of random variables, wherein the social network data indicatesocial relationships between any two of the plurality of users, wherein:the social network platform shares with the item rating andrecommendation platform the plurality of manipulated social network datawithout disclosing the social network data; and the item rating andrecommendation platform shares with the social network platform aplurality of manipulated user-feature data without disclosing theuser-feature data, and wherein the plurality of manipulated user-featuredata are computed based on the user-feature data and a second number ofrandom variables; computing, by the item rating and recommendationplatform, a product of the user-feature data and the social network databased on a sum of one of the plurality of the manipulated user-featuredata and one of the plurality of the manipulated social network datawithout the social network data; updating, by the item rating andrecommendation platform, the user-feature data based on the rating dataand the plurality of the manipulated social network data; updating theitem-feature data based on the rating data, the user-feature data, andthe plurality of the manipulated social network data; generatingpredicted rating data of the plurality of items with respect to theplurality of users based on the product of the user-feature data and theitem-feature data; and wherein updating the user-feature data comprisessolving an optimization problem to minimize a weighted sum of adifference between the predicted rating data and rating data, theuser-feature data weighted by the social network data,. and anoverfitting-preventing term; and wherein solving an optimization problemcomprising solving an equation:${\underset{U_{i},V_{j}}{\arg\;\min}\mspace{11mu} L} = {{\sum\limits_{{u_{j} \in \; u},{v_{j} \in \; v}}\left( {R_{ij} - {U_{i}^{T}V_{j}}} \right)^{2}} + {\lambda_{1}{\sum\limits_{u_{i},{u_{k} \in \; u}}{S_{ik}\left( {U_{i} - U_{k}} \right)}^{2}}} + {\lambda_{2}\left( {{{{\sum\limits_{u_{j} \in u}U_{i}}}}^{2} + {{{\sum\limits_{v_{j} \in \; v}V_{i}}}}^{2}} \right)}}$or the equation modified by one or more scalars or constants, wherein:U_(i) represents a vector of the user-feature data corresponding to useri; V_(j) represents a vector of the item-feature data corresponding toitem j; R_(ij) represents a rating of item j by user i; S_(ik)represents a social relationship between user i and user k; λ₁represents a predefined weight associated with the social network data;and λ₂ represents a predefined weight to prevent overfitting.
 9. Thecomputer-implemented system of claim 8, wherein computing a product ofthe user-feature data and the social network data by computing a sum ofone of the plurality of the manipulated user-feature data and one of theplurality of the manipulated social network data without the socialnetwork data comprises: for each entry in the product of theuser-feature data and the social network data, computing one of theplurality of the manipulated user-feature data and one of the pluralityof the manipulated social network data without the social network data.10. The computer-implemented system of claim 8, the operations furthercomprising: generating a recommendation of a particular item for aparticular customer based on the predicted rating data.